/**
 * 
 */
package cs534.policy;

/**
 * @author jhostetler
 *
 */
public abstract class MyPolicy<S, A> 
{
	protected S s_;
	
	public void enterObservation( final S s )
	{
		s_ = s;
		enterObservationImpl( s );
	}
	
	protected abstract void enterObservationImpl( final S s );
	
	public abstract A getAction();
	
	/**
	 * This function may be called by the execution environment to provide
	 * reward feedback. The default implementation is a no-op.
	 * @param s
	 * @param a
	 * @param sprime
	 * @param r
	 */
	public void actionResult( final S s, final A a, final S sprime, final double r )
	{
		
	}
}
